<!--
  #%L
  Fork of JAI Image I/O Tools.
  %%
  Copyright (C) 2008 - 2015 Open Microscopy Environment:
    - Board of Regents of the University of Wisconsin-Madison
    - Glencoe Software, Inc.
    - University of Dundee
  %%
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:
  
  1. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation
     and/or other materials provided with the distribution.
  
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  POSSIBILITY OF SUCH DAMAGE.
  #L%
  -->

<!--
$RCSfile: package.html,v $


Copyright (c) 2005 Sun Microsystems, Inc. All  Rights Reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met: 

- Redistribution of source code must retain the above copyright 
  notice, this  list of conditions and the following disclaimer.

- Redistribution in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in 
  the documentation and/or other materials provided with the
  distribution.

Neither the name of Sun Microsystems, Inc. or the names of 
contributors may be used to endorse or promote products derived 
from this software without specific prior written permission.

This software is provided "AS IS," without a warranty of any 
kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND 
WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL 
NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF 
USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR 
ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES. 

You acknowledge that this software is not designed or intended for 
use in the design, construction, operation or maintenance of any 
nuclear facility. 

$Revision: 1.1 $
$Date: 2005/02/11 05:01:21 $
$State: Exp $
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<body>
Provides <code>ImageInputStream</code> and <code>ImageOutputStream</code>
classes for use with the Java Image I/O Framework. The
<code>FileChannel</code>-based classes use the new I/O {@link java.nio}
package to accelerate reading and writing of image data.

<h2>FileChannelImageInputStream</h2>

<code>FileChannelImageInputStream</code> uses memory mapping and NIO view
<code>Buffer</code>s to perform its data reading. It may be created by direct
instantiation given a <code>FileChannel</code> or via the Java Image I/O
plug-in mechanism, for example from
<code>ImageIO.createImageInputStream()</code>.

<p>A service provider is also registered which creates an
<code>ImageInputStream</code> given a
{@link java.nio.channels.ReadableByteChannel}. If the
<code>ReadableByteChannel</code> is a
<code>FileChannel</code> then the <code>ImageInputStream</code> will be a
<code>FileChannelImageInputStream</code>. Otherwise an
<code>InputStream</code> will be derived from the <code>Channel</code> and
wrapped by a <code>FileCacheImageInputStream</code> if a disk cache is being
used and does not cause a security violation, or a
<code>MemoryCacheImageInputStream</code> if disk caching is disabled or not
permitted.</p>

<h2>FileChannelImageOutputStream</h2>

<code>FileChannelImageOutputStream</code> uses memory mapping and NIO view
<code>Buffer</code>s to perform its data reading and direct NIO and view
<code>Buffer</code>s to perform its data writing. It may be created by direct
instantiation given a <code>FileChannel</code> or via the Java Image I/O
plug-in mechanism, for example from
<code>ImageIO.createImageOutputStream()</code>.

<p>A service provider is also registered which creates an
<code>ImageOutputStream</code> given a
{@link java.nio.channels.WritableByteChannel}. If the
<code>WritableByteChannel</code> is a
<code>FileChannel</code> which has been opened for both reading and writing,
then the <code>ImageOutputStream</code> will be a
<code>FileChannelImageOutputStream</code>. Otherwise an
<code>OutputStream</code> will be derived from the <code>Channel</code> and
wrapped by a <code>FileCacheImageOutputStream</code> if a disk cache is being
used and does not cause a security violation, or a
<code>MemoryCacheImageOutputStream</code> if disk caching is disabled or not
permitted.</p>

<h2>RawImageInputStream</h2>

A <code>RawImageInputStream</code> provides a data input source for the
"raw" image format <code>ImageReader</code> plug-in. The
<code>RawImageInputStream</code> constructor which requires an
{@link org.xml.sax.InputSource} parameter allows an application to use
a pre-established XML description of the raw image file. This may be useful
in cases where groups of files have the same layout in which case identical
or similar XML description files may be re-used. Such a description file
would be used to create a <code>FileInputStream</code> from which the
<code>InputSource</code> would be created.

<h2>SegmentedImageInputStream</h2>

A <code>SegmentedImageInputStream</code> provides a contiguous view of
another <code>ImageInputStream</code> which itself consists of a sequence of
discontiguous segments containing the image data of interest. Such a stream
may be used for example in conjunction with a <code>RawImageInputStream</code>
to enable reading from a data source which has non-image data interspersed
with the image data. For example, an image could be stored in a line-oriented
fashion with prefix data such as a time stamp embedded in each line.

@since 1.0

</body>
